#include <iostream>
#include <unordered_map>
#include <vector>

using namespace std;

const int N = 1e5 + 10;

typedef long long LL;

int cnt, p[N];
bool st[N];
LL ans;

void get_prime()
{
	for(int i = 2; i <= N; i++)
	{
		if(!st[i]) p[++cnt] = i;
		for(int j = 1; 1ll * p[j] * i <= N; j++)
		{
			int x = p[j] * i;
			st[x] = true;
			if(i % p[j] == 0) break;
		}
		
	} 
}

void check(LL x)
{
	unordered_map<int, int> mp;
	for(int i = 1; i <= x / i; i++)
	{
		if(x % p[i] == 0) 
		{
			int ret = 0;
			while(x % p[i] == 0)
			{
				ret++;
				x /= p[i];
			}
			mp[i] = ret;
			if(mp.size() > 2) return;
		}
	}
	if(x > 1) mp[x]++;
	vector<int> a;
	for(auto t : mp)
	{
		a.push_back(t.second);
	}
	
	if(a.size() == 2 && a[0] == 1 && a[1] == 1) cnt++; 
}

int main()
{
	get_prime();
//	for(int i = 1; i <= cnt; i++) cout << p[i] << " ";
	for(int i = 48; i <= 4830459; i++)
	{
		LL x = i * i;
		check(x);
	}
	cout << cnt << endl;
	return 0;
}
